/*-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License.You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html
	
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.
	
The Original Code is Fever RS ( ActionScript 3 ) Framework code.
	
The Initial Developer of the Original Code is Romain Ecarnot.
Portions created by Initial Developer are Copyright (C) 2006
the Initial Developer. All Rights Reserved.
	
Contributor(s):
	
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-----------------------------------------------------------------------------*/

package fever.app.config 
{

	/**
	 * Host configuration informations.
	 * 
	 * @example 
 	 * <listing version="3.0">
 	 * 
 	 * FeverDebug.INFO( HostConfig.screenWidth + "x" + HostConfig.screenHeight );
 	 * FeverDebug.INFO( HostConfig.language );
 	 * </listing>
 	 * 
	 * @see fever.app.config.HostConfig
	 * 
	 * @author Romain Ecarnot
	 */
	public interface IHostConfig 
	{
		//--------------------------------------------------------------------
		// Public properties
		//--------------------------------------------------------------------
			
		/**
		 * A Boolean value that specifies whether access to the user's camera 
		 * and microphone has been administratively prohibited 
		 * (<code>true</code>) or allowed (<code>false</code>
		).
		 */
		function get avHardwareDisable() : Boolean;

		/**
		 * A Boolean value that is <code>true</code> if the player is 
		 * running in an environment that supports communication between 
		 * Flash Player and accessibility aids.
		 */
		function get hasAccessibility() : Boolean;

		/**
		 * Specifies if the system has audio capabilities.
		 * A Boolean value that is <code>true</code> if the player is 
		 * running on a system that has audio capabilities.
		 */
		function get hasAudio() : Boolean;

		/**
		 * Specifies if the system has a MP3 decoder. 
		 * A Boolean value that is <code>true</code> if the player is 
		 * running on a system that has an MP3 decoder.
		 */
		function get hasMP3() : Boolean;

		/**
		 * A Boolean value that is <code>true</code> if the player is 
		 * running on a system that supports printing.
		 */
		function get hasPrinting() : Boolean;

		/**
		 * Indicates the language of the system on which the player 
		 * is running.
		 */
		function get language() : String;

		/**
		 * A Boolean value that indicates whether read access to 
		 * the user's hard disk has been administratively 
		 * prohibited (<code>true</code>) or allowed (<code>false</code>). 
		 */
		function get localFileReadDisable() : Boolean;
		
		/** 
		 * A string that indicates the screen color. 
		 * This property can have the value "color", "gray" or "bw", 
		 * which represents color, grayscale, and black and white, 
		 * respectively. 
		 */
		function get screenColor() : String;

		/**
		 * A number that indicates the dots-per-inch (dpi) resolution of the 
		 * screen in pixels.
		 */
		function get screenDPI() : Number;

		/**
		 * An integer that indicates the maximum horizontal resolution of the 
		 * screen.
		 */
		function get screenWidth() : Number;

		/**
		 * An integer that indicates the maximum vertical resolution of the 
		 * screen.
		 */
		function get screenHeight() : Number;
		
		
		//--------------------------------------------------------------------
		// Public API
		//--------------------------------------------------------------------
		
		/**
		 * Returns <code>true</code> if current platform is windows 
		 * platform.
		 */
		function isWindows() : Boolean;

		/**
		 * Returns <code>true</code> if current platform is Mac OS 
		 * platform.
		 */
		function isMacOS() : Boolean;

		/**
		 * Returns <code>true</code> if current platform is Linux 
		 * platform.
		 */
		function isLinux() : Boolean;
		
		/**
		 * Returns <code>true</code> if current platform is unknown ( not
		 * Windows, not linux and not MacOs platform.
		 */
		function isUnknow () : Boolean;
	}
}
